Alt text

Структура исследования проектов платформы kickstarter.com

1. Зависит ли день недели открытия сбора средств на его успех? В какой день недели лучше запускать сбор средств?

2. Как зависит успешность проекта от выбранной категории?

3. Какие категории продуктов собрали больше всего средств?

4. Тепловая карта отношения успешных проектов к провальным по странам мира.

5. Дерево принятия решений на основе данных исследования.

6. Генерализация и переобучение на основе данных кикстартера.

7. Статистические тесты.

Примечание: Возможность выбора конкретной категории заказчиком условно не предполагается. Данный анализ разрабатывается с целью оценить шансы отдельного проекта, а не выбрать наиболее перспективную категорию для вложения средств. Исследователь считает нецелесообразным рекомендовать заказчику сферу деятельности, так как у заказчика на момент обращения должна быть конкретная сфера интересов, в которой он будет реализовывать свой продукт.


Первый вопрос. Зависит ли день недели открытия сбора средств на его успех? В какой день недели лучше запускать сбор средств?

Немаловажным фактором успешности проекта может стать день старта сбора средств. Действительно, в определенные дни, к примеру, когда люди более расслабленны от работы - они готовы пожертвовать больше средств. Так ли это на самом деле? Разберемся в результатах исследования.

Промежуточный вывод по графику:

На основе созданных графиков можно сделать вывод, что свой проект на платформе kickstarter лучше запускать во вторник, так как в этот день люди готовы вкладывать в проекты более активно, чем в остальные дни. Из этого можно сделать вывод, что дата открытия сбора средств является одним из факторов успеха проекта.


Второй вопрос. Как зависит успешность проекта от выбранной категории?

текст.

Промежуточный вывод по графику:

Проведя исследование доступных нам данных, я определил категории проектов, у которых процент успешности является наибольшим. Такими проектами являются проекты в категориях: комиксы (69%), танцы (62.9%) и театр (60.4%). Это может быть связано с тем, что все эти три категории так или иначе связаны с развлечением и известными группами или авторами, что снижает процент риска. Немало важным фактором может являться известность издателя, группы или исполнителя. Именно поэтому эти категории являются наиболее привлекательными для спонсоров.


Третий вопрос. Какие категории продуктов собрали больше всего средств?

Текст.

Промежуточный вывод по графику:

Проведя исследование доступных нам данных, я определил лучшие проекты по собранным средствам. Такими стали проекты в сфере Дизайна, Игр и Технологий. Вывод - пользователи кикстартера заинтересованы в этих категориях и готовы вкладывать в них деньги.


Четвертый вопрос. Тепловая карта стран мира по количеству проектов.

Текст.

Промежуточный вывод по графику:

Данный интерактивный график показывает отношение успешных проектов к провальным по странам мира. Несмотря на выбросы данных в США, показатели распределились равномерно. Явным фаворитом является Дания, так как показатель в этой стране превышает единицу, что означает преобладание успешных проектов над провальными.


Пятый вопрос. Дерево принятия решений на основе данных исследования.

# Проверка качества модели
pred = predict(tree1, type="class")

t = table(ks$state, pred)
t
##             pred
##              failed successful
##   failed      22108       2798
##   successful   1283      17146
# accuracy
(t[1,1] + t[2,2])/sum(t)
## [1] 0.9058267
ks$predicted = pred
source("~/shared/minor2_2019/1-Intro/lab09-gini-trees/compute_gini.R") # загружаем функцию Джини
gini_split(data = ks, real = state, predicted = predicted)
## [1] 0.1669823

Вывод по дереву решений:

Категория backers является важным фактором успешности проекта. Так как изначально мы ее не знаем, заказчик может оценить шансы своего действующего проекта, основываясь на даннном дереве принятия решений. Точность модели - 0.905, коэфициент Джини - 0.167 (чем меньше, тем лучше).


Шестой вопрос. Генерализация и переобучение на основе данных кикстартера.

ks$id = 1:nrow(ks)
# "зерно" для генератора случайных чисел
set.seed(12345) 

# Возьмем 80% как обучающие
train = ks %>% dplyr::sample_frac(.8)

# Создаем тестовый набор данных
# Через анти-джойн, чтобы убрать все наблюдения, попавшие в обучающую выборку
test = dplyr::anti_join(ks, train, by = 'id') %>% dplyr::select(-id, -name, -launched, -deadline)
train = train %>% dplyr::select(-id, -name, -launched, -deadline)
#посмотрим предсказания для новых данных -- не забываем указывать тип предсказания
pred = predict(tree2, type="class")

#матрица смежности
t = table(pred, train$state)
t
##             
## pred         failed successful
##   failed      17666       1041
##   successful   2224      13737
(t[1,1] + t[2,2])/sum(t)
## [1] 0.9058209
# Тестовая модель
pred2 = predict(tree2, test, type="class")

## Accuracy на тестовой
t = table(pred2, test$state)
t
##             
## pred2        failed successful
##   failed       4467        251
##   successful    549       3400
(t[1,1] + t[2,2])/sum(t)
## [1] 0.9076959
# **Проблема переобучения.** Для её решения используется оценка дерева на каждом уровне с помощью кроссвалидации -- перебираются варианты с разными значениями параметра, регулирующего глубину дерева, выбирая то значение, при котором ошибка становится минимальной.
tree3 <- rpart(state ~ main_category + goal_usd + time +backers, method = "class", data = ks, cp= 0.001)


knitr::kable(as.data.frame(tree3$cptable)) # cp = 0.0001628 , xerror = 0.1730425|
CP nsplit rel error xerror xstd
0.6552173 0 1.0000000 1.0000000 0.0055845
0.0408053 1 0.3447827 0.3447827 0.0039957
0.0208639 3 0.2631722 0.2674589 0.0035864
0.0062673 5 0.2214445 0.2269250 0.0033354
0.0028036 7 0.2089099 0.2160182 0.0032626
0.0027945 10 0.2004992 0.2074448 0.0032037
0.0022790 12 0.1949102 0.2026697 0.0031701
0.0018178 14 0.1903522 0.1980031 0.0031368
0.0016279 17 0.1848174 0.1940420 0.0031081
0.0014651 18 0.1831895 0.1907320 0.0030838
0.0014108 20 0.1802594 0.1888871 0.0030702
0.0011938 21 0.1788486 0.1875305 0.0030601
0.0010000 23 0.1764610 0.1839492 0.0030333

Вывод по генерализации и переобучению модели:

Точность тестовой - 0.907 Точность тренировочной - 0.905 cp = 0.0001628 xerror = 0.1730425


Седьмой вопрос. Статистические тесты.

1. Существует ли статистически значимое различие категории проекта и тем, в какой стране он был запущен?

ch <- chisq.test(ks$main_category, ks$country)
ch
## 
##  Pearson's Chi-squared test
## 
## data:  ks$main_category and ks$country
## X-squared = 2543.5, df = 280, p-value < 2.2e-16

Вывод по 1: pvalue M 2.2 e-16 —- Согласно результатам хи-квадрата, наблюдается статистически значимое различие между категорией проекта и страной.

2. Существует ли статистически значимое различие количества донатеров от успешности проекта?

t.test(backers~state, data = ks)
## 
##  Welch Two Sample t-test
## 
## data:  backers by state
## t = -35.818, df = 18474, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -322.1174 -288.6918
## sample estimates:
##     mean in group failed mean in group successful 
##                 14.57496                319.97954

Вывод по 2: pvalue M 2.2 e-16 —- Согласно результатам ти-теста, наблюдается статистически значимое различие между количеством донатеров и успешностью проекта.


Заключительный вывод проведённого анализа.

На основе проведённого анализа, представленного для владельца будущего проекта на кикстартере, я бы хотел привести ряд рекомендаций для потенциального заказчика:


Data Science Minor 2019-2020